<?php
#程序计时器
/**
 * 在程序执行结束，计算程序执行消耗时间
 *
 * @return null
 */
$GLOBALS['emvc_start_time']= array_sum(explode(' ', microtime()));
function timer(){
	global $emvc_start_time;
	$end_time = array_sum(explode(' ', microtime()));
	$var=sprintf('%.6f',$end_time-$emvc_start_time);
	echo '<div>Powered by Emvc! Parse Time:'.$var.'s</div>';
}
function prints($a){
	echo '<pre>';
	echo print_r($a);
	echo '</pre>';
}

/**
 * 调试参数中的变量并中断程序的执行，参数可以为任意多个,类型任意，如果参数中含有'debug'参数，刚显示所有的调用过程。
 * 
 * <code>
 * debug($var1,$obj1,$array1[,]................);
 * debug($var1,'debug');
 * </code>
 */
function debug() {
	$args = func_get_args();
	echo '---------------------debug info.---------------------<pre>';
	foreach ($args as $value) {
		if(is_null($value)){
			echo '[is_null]';
		}elseif(is_bool($value) || empty($value)){
			var_dump($value);
		}else{
			print_r($value);
		}
		echo '<br>';
	}
	$trace=debug_backtrace();
	$next = array_merge(
					array(
						'line'		=> '??',
						'file'		=> '[internal]',
						'class'		=> null,
						'function'	=> '[main]'
					),
					$trace[0]
				);
	if(strpos($next['file'],EMVC_PATH_LIBRARIES)===0){
		$next['file'] = str_replace(EMVC_PATH_LIBRARIES, DS.'Libraries'.DS,$next['file']);
	}elseif(strpos($next['file'],EMVC_PATH_ROOT)===0){
		$next['file'] = str_replace(EMVC_PATH_ROOT, DS.'Webroot'.DS,$next['file']);
	}
	echo '---------------------debug ended---------------------';
	echo '<div style="color:red;">'.$next['file'].' line:'.$next['line'].'</div>';
	if(in_array('debug',$args)){
		print_r($trace);
	}
echo '</pre>';
timer();
//unset($trace);
exit();
exit ('---------------------debug ended---------------------');
}
?>